home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-04-21 | 2.9 KB | 80 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: FWStrgAr.cpp
- // Release Version: $ 1.0d1 $
- //
- // Creation Date: 3/28/94
- //
- // Copyright: © 1994 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #ifndef FWSTRGAR_H
- #include "FWStrgAr.h"
- #endif
-
- #ifndef FWARDYNA_H
- #include "FWArDyna.h"
- #endif
-
- #ifndef FWARSTRM_H
- #include "FWArStrm.h"
- #endif
-
- #pragma segment Strings
-
- //========================================================================================
- // Define string RTTI information
- //========================================================================================
-
- FW_DEFINE_CLASS_M0(FW_CString)
- FW_DEFINE_CLASS_M1(FW_CString32, FW_CString)
- FW_DEFINE_CLASS_M1(FW_CString255, FW_CString)
- FW_DEFINE_CLASS_M1(FW_CDynamicString, FW_CString)
-
- //========================================================================================
- // Register archiver read/write methods for string classes
- //========================================================================================
-
- FW_REGISTER_ARCHIVE_CLASS(FW_LString32, FW_CString32, (FW_TStringArchiver<FW_CString32>::Read), (FW_TStringArchiver<FW_CString32>::Write))
- FW_REGISTER_ARCHIVE_CLASS(FW_LString255, FW_CString255, (FW_TStringArchiver<FW_CString255>::Read), (FW_TStringArchiver<FW_CString255>::Write))
- FW_REGISTER_ARCHIVE_CLASS(FW_LDynamicString, FW_CDynamicString, (FW_TStringArchiver<FW_CDynamicString>::Read), (FW_TStringArchiver<FW_CDynamicString>::Write))
-
- //========================================================================================
- // FW_InitializeStrings
- //========================================================================================
-
- void FW_InitializeStrings(void)
- {
- #ifndef FW_HAS_INSTANCE_DATA
- FW_CDynamicArchiver::MergeArchiverMaps();
- #endif
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CStringArchiver::Read
- //----------------------------------------------------------------------------------------
-
- void FW_CStringArchiver::Read(FW_CReadableArchive & archive, FW_CString& string)
- {
- FW_ByteCount byteCount;
-
- archive >> byteCount;
- string.GrowCapacity(byteCount);
- FW_ASSERT(byteCount <= string.GetCapacity());
- archive.Read(string.fRepresentation, byteCount);
- string.SetLength(FW_CharactersInBlock(string.fRepresentation, byteCount), byteCount);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CStringArchiver::Write
- //----------------------------------------------------------------------------------------
-
- void FW_CStringArchiver::Write(FW_CWritableArchive & archive,
- const FW_CString &string)
- {
- FW_ByteCount byteCount = string.GetByteLength();
- archive << byteCount;
- archive.Write(string.fRepresentation, byteCount);
- }
-